package com.chaopei.msite_web.controller;

import com.chaopei.goods_mng_api.entity.Product;
import com.chaopei.msite_web.service.ProductService;
import com.chaopei.msite_web.utils.MyRedis;
import com.chaopei.msite_web.utils.MyTools;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

import javax.annotation.Resource;
import javax.servlet.http.HttpSession;
import java.util.ArrayList;
import java.util.List;

/**
 * @Author Corday 天涯
 * @Date 2022/5/6 9:50
 */
@Controller
@RequestMapping("/web")
public class WebController {
//    注入商品管理对象
    @Resource
    private ProductService productService;
//    注入redis的对象
    @Resource
    private MyRedis myRedis;
    /**
     * http://localhost:8080/web/
     * @param session
     * @return 逻辑视图
     * 到首页
     */
    @RequestMapping("/")
    public String goIndex(HttpSession session) {
        //先判断redis中是否已经缓存
        List<Product> list=myRedis.getProducts("products");
        //如果reddis没有缓存,则需读取mysql并做缓存或者
        if(list==null){
            list=new ArrayList<>();
            //远程获取数据库中的数据
            String json = productService.getProduts();
            if(json.equals("error")){
                session.setAttribute("msg","网络阻塞...");
                return "pages/error";
            }
            //保存到redis
            myRedis.setString("products",json);
            //传数据到前端
            list=MyTools.getProducts(json);
            session.setAttribute("products",list);
        }else {
            //如果redis有缓存数据,则直接读取,不从mysql远程读取
            session.setAttribute("products",list);
        }
        return "pages/index";
    }
    /**
     * 到商品传详情页
     * @param pid 商品序号
     * @param session
     * @return
     */
    @RequestMapping("/goDetail")
    public String goDetail(Integer pid, HttpSession session){
//        从前端直接拿再转成java对象
        Product pd = ((List<Product>) (session.getAttribute("products"))).get(pid);
        session.setAttribute("pd", pd);
        return "pages/detail";
    }

    /**
     * 到购物车首页
     * @return
     */
    @RequestMapping("/goCart")
    public  String goCart(){
        return "pages/my-cart";
    }

}
